package org.jsola.contract.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.contract.constant.AccountType;
import org.jsola.core.dto.BaseDTO;
import org.jsola.core.validator.Const;

import javax.validation.constraints.NotNull;

import java.util.Date;
import java.util.List;
import java.util.Map;

import static org.jsola.contract.example.AccountExample.*;

/**
 * @author JanusMix
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【成员模板变量填写】的参数")
@Data
public class MemberVariableDTO extends BaseDTO {

    private static final long serialVersionUID = 8316330681067459366L;

    @ApiModelProperty(notes = N_TYPE, example = E_TYPE, required = true, allowableValues = AccountType.VALUES_STR)
    @Const(constClass = AccountType.class, message = M_TYPE_ENUM_NOT_MATCH)
    private Integer accountType;

    @ApiModelProperty(notes = "账号id", example = "1", required = true)
    private String memberId;

    @ApiModelProperty(notes = "合同名称")
    @NotNull
    private String contractName;

    @ApiModelProperty(notes = "合同编号")
    @NotNull
    private String contractNo;

    @ApiModelProperty(notes = "文件名称")
    @NotNull
    private String fileName;

    @ApiModelProperty(notes = "模板内容")
    private String templateContent;

    @ApiModelProperty(notes = "变量填写列表")
    private List<Map<String, Object>> variableList;

    @ApiModelProperty(notes = "签署甲方名称,例:华杰测试公司")
    private String partyAName;

    @ApiModelProperty(notes = "签署乙方名称,例:张三")
    private String partyBName;

    @ApiModelProperty(notes = "签署乙方手机号,例:15854623526")
    private String partyBPhone;

    @ApiModelProperty(notes = "合同结束时间")
    private Date endDate;

    @ApiModelProperty(notes = "合同开始时间")
    private Date publishDate;

    @ApiModelProperty(notes = "合同期限")
    private Integer dateline;

    @ApiModelProperty(notes = "合同类型")
    private String contractType;

}
